/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ec.edu.espe.distribuidas.aseguradora.servicio;


import ec.edu.espe.distribuidas.aseguradora.dao.ClienteFacade;
import ec.edu.espe.distribuidas.aseguradora.modelo.Cliente;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

/**
 *
 * @author alejandro
 */
@Stateless
@LocalBean
public class ClienteServicio {
    
    @EJB
    private ClienteFacade clienteFacade;
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void crear(Cliente cliente){
        
        //Aumentado
        this.clienteFacade.create(cliente);

        //Cliente clienteTmp=this.clienteFacade.find(cliente.getCodCliente());
        /*
        Cliente clienteTmp=this.buscarPorNombre(cliente.getCliNombre());
        if (clienteTmp==null) {
            this.clienteFacade.create(cliente);
        } else {
            System.err.println("Codigo de cliente ya registrado."+cliente.getCodCliente());
            ErrorValidacionException evex=new ErrorValidacionException("El codigo que ingreso  no esta registrado");
            throw evex;
            
        }*/
        
        
    }
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void modificar(Cliente cliente)
    {
        this.clienteFacade.edit(cliente);
    }
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void eliminar(Integer codigoClinte){
        
        
        Cliente clienteTmp=this.clienteFacade.find(codigoClinte);
        if(clienteTmp!=null){
            this.clienteFacade.remove(clienteTmp);
        }else{
            System.err.println("No existe cliente con el codigo especificado"+codigoClinte);
            
        }
    }
    
    public Cliente buscarPorCodigo(String codigo)
    {
        return this.clienteFacade.findPorCodigo(codigo);
    }
    
//    public List<Cliente> buscarPorNombre(String nombre)
//    {
//        return this.clienteFacade.findByName(nombre);
//        
//    }
    
    public List<Cliente>  obtenerTodos(){
        return this.clienteFacade.findAll();
    }
    
    
}
